-
Notifications
You must be signed in to change notification settings - Fork 117
RHAIENG-1475: enablement(s390x): changes for codeserver #2575
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RHAIENG-1475: enablement(s390x): changes for codeserver #2575
Conversation
Hi @aryabjena. Thanks for your PR. I'm waiting for a github.com member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
WalkthroughAdds s390x support across the codeserver UBI9 Python 3.12 build: Dockerfile package/install tweaks, an s390x-specific development setup, s390x patching and build steps for codeserver RPM, and platform gating of several Python dependencies. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
hey @jiridanek can you review this PR ?, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
codeserver/ubi9-python-3.12/Dockerfile.cpu
(4 hunks)codeserver/ubi9-python-3.12/devel_env_setup.sh
(2 hunks)codeserver/ubi9-python-3.12/get_code_server_rpm.sh
(2 hunks)codeserver/ubi9-python-3.12/pylock.toml
(4 hunks)codeserver/ubi9-python-3.12/pyproject.toml
(2 hunks)
👮 Files not reviewed due to content moderation or server errors (1)
- codeserver/ubi9-python-3.12/pylock.toml
🧰 Additional context used
🧠 Learnings (12)
📓 Common learnings
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-05T17:24:08.616Z
Learning: jiridanek requested PR review for #1521 covering s390x architecture support improvements, demonstrating continued focus on systematic multi-architecture compatibility enhancements in the opendatahub-io/notebooks repository through clean implementation with centralized configuration, proper CI integration, and architecture-aware testing patterns.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/get_code_server_rpm.sh:65-66
Timestamp: 2025-09-05T12:34:48.372Z
Learning: jiridanek requested GitHub issue creation for patches mechanism improvement in codeserver/ubi9-python-3.12/get_code_server_rpm.sh during PR #2227 review. GitHub issue #2318 was created addressing fragile patches application that assumes patches/series always exists, proposing conditional patch handling with proper validation, error handling, and documentation, assigned to jiridanek, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2432
File: jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu:232-249
Timestamp: 2025-09-12T08:27:00.439Z
Learning: jiridanek requested GitHub issue creation for Rust toolchain availability during s390x builds in jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu during PR #2432 review. The issue addresses PATH availability problems where Rust/cargo installed in cpu-base stage at /opt/.cargo/bin may not be accessible during uv pip install step in jupyter-datascience stage, proposing three solution approaches: immediate environment variable fix, builder stage pattern following codeserver approach, and ENV declaration fix, with comprehensive acceptance criteria covering build reliability, multi-architecture compatibility, and alignment with established patterns, continuing the systematic infrastructure improvement tracking methodology.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2432
File: jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu:232-249
Timestamp: 2025-09-12T08:27:00.439Z
Learning: jiridanek requested GitHub issue creation for Rust toolchain availability during s390x builds in jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu during PR #2432 review. Issue #2435 was created addressing PATH availability problems where Rust/cargo installed in cpu-base stage at /opt/.cargo/bin may not be accessible during uv pip install step in jupyter-datascience stage, proposing three solution approaches: immediate environment variable fix, builder stage pattern following codeserver approach, and ENV declaration fix, with comprehensive acceptance criteria covering build reliability, multi-architecture compatibility, and alignment with established patterns, continuing the systematic infrastructure improvement tracking methodology.
📚 Learning: 2025-09-05T12:25:09.719Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/Dockerfile.cpu:122-123
Timestamp: 2025-09-05T12:25:09.719Z
Learning: jiridanek requested GitHub issue creation for Docker multi-stage synchronization improvement in codeserver/ubi9-python-3.12/Dockerfile.cpu during PR #2227 review. The issue addresses sentinel file pattern using /tmp/control copied to /dev/null for stage coordination between rpm-base, whl-cache, and codeserver stages, proposing semantic improvements with descriptive file names, inline documentation, and elimination of /dev/null hack while maintaining multi-architecture build functionality for ppc64le support.
Applied to files:
codeserver/ubi9-python-3.12/Dockerfile.cpu
📚 Learning: 2025-09-05T12:25:58.344Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/Dockerfile.cpu:126-128
Timestamp: 2025-09-05T12:25:58.344Z
Learning: jiridanek expressed concern about code-server installation complexity in codeserver/ubi9-python-3.12/Dockerfile.cpu during PR #2227 review, describing the multi-stage cache mount approach as a "hack" that worries them, leading to GitHub issue creation for systematic architectural improvement addressing maintainability concerns.
Applied to files:
codeserver/ubi9-python-3.12/Dockerfile.cpu
📚 Learning: 2025-09-05T12:25:58.344Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/Dockerfile.cpu:126-128
Timestamp: 2025-09-05T12:25:58.344Z
Learning: jiridanek expressed concern about code-server installation complexity in codeserver/ubi9-python-3.12/Dockerfile.cpu during PR #2227 review, describing the multi-stage cache mount approach as a "hack" that worries them. GitHub issue #2315 was created addressing the architectural complexity with comprehensive problem description, four solution options, clear acceptance criteria, and implementation considerations, assigned to jiridanek, continuing the established pattern of systematic technical improvement tracking.
Applied to files:
codeserver/ubi9-python-3.12/Dockerfile.cpu
📚 Learning: 2025-09-05T12:29:07.819Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/Dockerfile.cpu:218-218
Timestamp: 2025-09-05T12:29:07.819Z
Learning: jiridanek requested GitHub issue creation for uv multi-stage Docker build architectural investigation during PR #2227 review. The current implementation uses a three-stage build with whl-cache stage for wheel building/caching, base stage for OS setup, and final codeserver stage for offline installation using --offline flag and cache mounts. The pattern separates build phase (internet access, build tools) from install phase (offline, faster) while supporting multi-architecture builds (x86_64, ppc64le) with sentinel file coordination using /tmp/control files.
Applied to files:
codeserver/ubi9-python-3.12/Dockerfile.cpu
📚 Learning: 2025-09-12T08:27:00.439Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2432
File: jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu:232-249
Timestamp: 2025-09-12T08:27:00.439Z
Learning: jiridanek requested GitHub issue creation for Rust toolchain availability during s390x builds in jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu during PR #2432 review. Issue #2435 was created addressing PATH availability problems where Rust/cargo installed in cpu-base stage at /opt/.cargo/bin may not be accessible during uv pip install step in jupyter-datascience stage, proposing three solution approaches: immediate environment variable fix, builder stage pattern following codeserver approach, and ENV declaration fix, with comprehensive acceptance criteria covering build reliability, multi-architecture compatibility, and alignment with established patterns, continuing the systematic infrastructure improvement tracking methodology.
Applied to files:
codeserver/ubi9-python-3.12/Dockerfile.cpu
📚 Learning: 2025-09-12T08:27:00.439Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2432
File: jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu:232-249
Timestamp: 2025-09-12T08:27:00.439Z
Learning: jiridanek requested GitHub issue creation for Rust toolchain availability during s390x builds in jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu during PR #2432 review. The issue addresses PATH availability problems where Rust/cargo installed in cpu-base stage at /opt/.cargo/bin may not be accessible during uv pip install step in jupyter-datascience stage, proposing three solution approaches: immediate environment variable fix, builder stage pattern following codeserver approach, and ENV declaration fix, with comprehensive acceptance criteria covering build reliability, multi-architecture compatibility, and alignment with established patterns, continuing the systematic infrastructure improvement tracking methodology.
Applied to files:
codeserver/ubi9-python-3.12/Dockerfile.cpu
📚 Learning: 2025-09-05T12:35:44.985Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/get_code_server_rpm.sh:18-19
Timestamp: 2025-09-05T12:35:44.985Z
Learning: jiridanek requested GitHub issue creation for architecture validation guard in codeserver/ubi9-python-3.12/get_code_server_rpm.sh during PR #2227 review. Issue #2320 was successfully created addressing missing validation for unknown architectures in UNAME_TO_GOARCH mapping lookup where empty ARCH values could cause silent failures, with comprehensive problem description, detailed proposed solution with code example, specific acceptance criteria, implementation considerations, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Applied to files:
codeserver/ubi9-python-3.12/get_code_server_rpm.sh
📚 Learning: 2025-09-05T12:35:44.985Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/get_code_server_rpm.sh:18-19
Timestamp: 2025-09-05T12:35:44.985Z
Learning: jiridanek requested GitHub issue creation for architecture validation guard in codeserver/ubi9-python-3.12/get_code_server_rpm.sh during PR #2227 review. The issue addresses missing validation for unknown architectures in UNAME_TO_GOARCH mapping lookup where empty ARCH values could cause silent failures, proposing defensive programming with clear error messages, supported architecture listing, and proper exit codes, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Applied to files:
codeserver/ubi9-python-3.12/get_code_server_rpm.sh
📚 Learning: 2025-09-10T21:01:46.464Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-09-10T21:01:46.464Z
Learning: jiridanek requested GitHub issue creation for banner comment documentation update in codeserver/ubi9-python-3.12/get_code_server_rpm.sh during PR #2356 review. Issue #2395 was created to update outdated banner comment that only mentioned ppc64le support when script now builds RPMs for amd64, arm64, and ppc64le architectures, with specific diff showing the required changes from lines 4-8, continuing the established pattern of systematic documentation improvements through detailed issue tracking.
Applied to files:
codeserver/ubi9-python-3.12/get_code_server_rpm.sh
📚 Learning: 2025-09-05T12:34:48.372Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/get_code_server_rpm.sh:65-66
Timestamp: 2025-09-05T12:34:48.372Z
Learning: jiridanek requested GitHub issue creation for patches mechanism improvement in codeserver/ubi9-python-3.12/get_code_server_rpm.sh during PR #2227 review. GitHub issue #2318 was created addressing fragile patches application that assumes patches/series always exists, proposing conditional patch handling with proper validation, error handling, and documentation, assigned to jiridanek, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Applied to files:
codeserver/ubi9-python-3.12/get_code_server_rpm.sh
📚 Learning: 2025-09-05T10:05:35.575Z
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1513
File: runtimes/datascience/ubi9-python-3.12/pylock.toml:180-180
Timestamp: 2025-09-05T10:05:35.575Z
Learning: In Python lock files for the datascience runtime, both bcrypt and paramiko packages are excluded from s390x platform using the marker "platform_machine != 's390x'" due to compatibility issues on IBM System z mainframe architecture.
Applied to files:
codeserver/ubi9-python-3.12/pylock.toml
Fix conditional syntax for architecture guard. The missing space before "$ARCH" turns the token into ||"$ARCH", so bash complains with “conditional binary operator expected” and exits before any build logic runs. as suggested by code coderabbitai
changed to do proper && chain for dnf
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (1)
codeserver/ubi9-python-3.12/devel_env_setup.sh (1)
69-72
: DNF chaining fix looks good (previous break resolved).The install sequence is now properly chained; no premature command break.
🧹 Nitpick comments (7)
codeserver/ubi9-python-3.12/devel_env_setup.sh (7)
66-67
: Remove unnecessary trailing backslashes after comment/then.They’re not needed and reduce readability. Safe to drop.
- # Additional dev tools only for s390x \ -if [[ $(uname -m) == "s390x" ]]; then \ + # Additional dev tools only for s390x +if [[ $(uname -m) == "s390x" ]]; then
69-71
: Deduplicate and consolidate s390x package installs.
cmake
andlcms2-devel
are listed twice. Consolidate to a single dnf install after EPEL to speed builds and avoid redundancy.- dnf install -y perl mesa-libGL skopeo libxcrypt-compat python3.12-devel pkgconf-pkg-config gcc gcc-gfortran gcc-c++ ninja-build make openssl-devel python3-devel pybind11-devel autoconf automake libtool cmake openblas-devel libjpeg-devel zlib-devel libtiff-devel freetype-devel lcms2-devel libwebp-devel git tar wget && \ - dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ - dnf install -y cmake gcc gcc-toolset-13 fribidi-devel lcms2-devel openjpeg2-devel libraqm-devel libimagequant-devel tcl-devel tk-devel && \ + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ + dnf install -y \ + perl mesa-libGL skopeo libxcrypt-compat python3.12-devel python3-devel \ + pkgconf-pkg-config gcc gcc-gfortran gcc-c++ gcc-toolset-13 \ + ninja-build make openssl-devel pybind11-devel \ + autoconf automake libtool cmake \ + openblas-devel libjpeg-devel zlib-devel libtiff-devel freetype-devel lcms2-devel libwebp-devel \ + openjpeg2-devel libraqm-devel libimagequant-devel tcl-devel tk-devel \ + git tar wget && \
82-85
: Remove redundant nested s390x check.You’re already inside the s390x branch.
- if [[ $(uname -m) == "s390x" ]]; then - echo "Checking OpenBLAS pkg-config..." - pkg-config --exists openblas || echo "Warning: openblas.pc not found" - fi + echo "Checking OpenBLAS pkg-config..." + pkg-config --exists openblas || echo "Warning: openblas.pc not found"
87-87
: CMAKE_ARGS appears unused in this flow.Confirm if any subsequent builds consume it; otherwise remove to avoid confusion.
89-91
: Make pyarrow version extraction more robust.Grep can misfire on unrelated numbers. Prefer parsing TOML if feasible.
- PYARROW_VERSION=$(grep -A1 '"pyarrow"' pylock.toml | grep -Eo '\b[0-9\.]+\b') + # Prefer TOML parsing; falls back to grep if parsing fails. + PYARROW_VERSION=$(python - <<'PY' 2>/dev/null || true +import tomllib, sys, re +with open("pylock.toml","rb") as f: + data = f.read().decode() +# Adjust this extraction to actual structure if known. +m = re.search(r'(?ms)^\s*"?pyarrow"?\b.*?version\s*=\s*"([0-9.]+)"', data) +print(m.group(1)) +PY +) + if [[ -z "${PYARROW_VERSION}" ]]; then + PYARROW_VERSION=$(grep -A1 '"pyarrow"' pylock.toml | grep -Eo '\b[0-9\.]+\b' | head -n1) + fi
74-79
: Rustup install: prefer minimal profile and quiet mode.Saves bandwidth/time and reduces log noise.
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y -q --profile minimal
4-8
: Update banner comment to reflect multi-arch (now includes s390x).Avoid misleading maintainers; note that OpenBLAS-from-source applies to ppc64le path.
-# This script is expected to be run on ppc64le hosts as `root` # -# It installs the required build-time dependencies for python wheels # -# OpenBlas is built from source (instead of distro provided) with recommended flags for performance # +# This script is expected to be run on ppc64le and s390x hosts as `root` # +# It installs the required build-time dependencies for Python wheels # +# On ppc64le, OpenBLAS is built from source with recommended flags; on s390x, distro OpenBLAS is used #Based on learnings
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
codeserver/ubi9-python-3.12/devel_env_setup.sh
(2 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-08-05T17:24:08.616Z
Learning: jiridanek requested PR review for #1521 covering s390x architecture support improvements, demonstrating continued focus on systematic multi-architecture compatibility enhancements in the opendatahub-io/notebooks repository through clean implementation with centralized configuration, proper CI integration, and architecture-aware testing patterns.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/get_code_server_rpm.sh:65-66
Timestamp: 2025-09-05T12:34:48.372Z
Learning: jiridanek requested GitHub issue creation for patches mechanism improvement in codeserver/ubi9-python-3.12/get_code_server_rpm.sh during PR #2227 review. GitHub issue #2318 was created addressing fragile patches application that assumes patches/series always exists, proposing conditional patch handling with proper validation, error handling, and documentation, assigned to jiridanek, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#0
File: :0-0
Timestamp: 2025-09-10T21:01:46.464Z
Learning: jiridanek requested GitHub issue creation for banner comment documentation update in codeserver/ubi9-python-3.12/get_code_server_rpm.sh during PR #2356 review. Issue #2395 was created to update outdated banner comment that only mentioned ppc64le support when script now builds RPMs for amd64, arm64, and ppc64le architectures, with specific diff showing the required changes from lines 4-8, continuing the established pattern of systematic documentation improvements through detailed issue tracking.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2227
File: codeserver/ubi9-python-3.12/get_code_server_rpm.sh:18-19
Timestamp: 2025-09-05T12:35:44.985Z
Learning: jiridanek requested GitHub issue creation for architecture validation guard in codeserver/ubi9-python-3.12/get_code_server_rpm.sh during PR #2227 review. Issue #2320 was successfully created addressing missing validation for unknown architectures in UNAME_TO_GOARCH mapping lookup where empty ARCH values could cause silent failures, with comprehensive problem description, detailed proposed solution with code example, specific acceptance criteria, implementation considerations, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#1513
File: runtimes/datascience/ubi9-python-3.12/Dockerfile.cpu:104-108
Timestamp: 2025-09-05T10:07:53.476Z
Learning: jiridanek requested GitHub issue creation for Arrow codec configuration problem during PR #1513 review. Issue #2305 was created addressing disabled core Arrow codecs (LZ4, Zstd, Snappy) in s390x pyarrow build that prevents reading compressed Parquet/Arrow datasets. The issue includes comprehensive problem description covering data compatibility impact, detailed solution enabling codecs with BUNDLED dependencies, clear acceptance criteria for functionality verification, and proper context linking to PR #1513 review comment, assigned to jiridanek.
Learnt from: jiridanek
PR: opendatahub-io/notebooks#2504
File: codeserver/ubi9-python-3.12/test/test_startup.py:62-68
Timestamp: 2025-09-18T12:02:57.831Z
Learning: jiridanek requested GitHub issue creation for codeserver test script improvements during PR #2504 review, covering both process group termination fixes (to prevent orphaned child processes from run-code-server.sh) and self-testing capabilities (to avoid wasteful full image builds during development). The issue includes comprehensive problem descriptions, implementation details with code examples, phased acceptance criteria, and proper context linking, continuing the established pattern of systematic code quality improvements through detailed issue tracking.
# only for mounting on other ppc64le | ||
mkdir -p /root/OpenBLAS/ | ||
fi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarify comment vs condition.
Block runs on non-ppc64le, but the comment mentions “other ppc64le”. Reword to match behavior.
- # only for mounting on other ppc64le
+ # Create mount point for OpenBLAS in non-ppc64le builds (used by ppc64le multistage mounting)
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
# only for mounting on other ppc64le | |
mkdir -p /root/OpenBLAS/ | |
fi | |
# Create mount point for OpenBLAS in non-ppc64le builds (used by ppc64le multistage mounting) | |
mkdir -p /root/OpenBLAS/ | |
fi |
🤖 Prompt for AI Agents
In codeserver/ubi9-python-3.12/devel_env_setup.sh around lines 135 to 137, the
inline comment "only for mounting on other ppc64le" contradicts the condition
(block runs on non-ppc64le); update the comment to accurately reflect the
behavior (e.g., "create OpenBLAS dir for mounting when not on ppc64le" or
similar) so it matches the condition and avoid confusion.
/ok-to-test |
/ok-to-test |
@aryabjena: The following tests failed, say
Full PR test history. Your PR dashboard. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: jiridanek The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
https://issues.redhat.com/browse/RHAIENG-1474
Description
How Has This Been Tested?
Self checklist (all need to be checked):
make test
(gmake
on macOS) before asking for reviewDockerfile.konflux
files should be done inodh/notebooks
and automatically synced torhds/notebooks
. For Konflux-specific changes, modifyDockerfile.konflux
files directly inrhds/notebooks
as these require special attention in the downstream repository and flow to the upcoming RHOAI release.Merge criteria:
Summary by CodeRabbit
New Features
Chores